package kn.webstd.g4g.business;

import java.util.List;

import kn.webstd.g4g.commons.dts.GraphicDts;
import kn.webstd.g4g.commons.dts.ObjectiveDts;
import kn.webstd.g4g.commons.dts.ProgramDts;
import kn.webstd.g4g.commons.dts.StatusDts;
import kn.webstd.tools.business.IService;
import kn.webstd.tools.business.security.IAuthorizationManager.PermitAll;

@PermitAll
public interface IProgramService extends IService {
	public ProgramDts getProgram(ProgramDts program);
	public ObjectiveDts getObjectiveByProgram(ProgramDts program);
	public ProgramDts calculateGAP(ProgramDts program, StatusDts period);
	public ProgramDts calculateGAPWithPeriod(ProgramDts program, StatusDts period);
	public double getTotalDaysBetween(ProgramDts program);
	public List<ProgramDts> getProgramTrend(ProgramDts program, StatusDts period);
	public List<ProgramDts> getAllProgramsByObjective(ObjectiveDts objective);
	public List<GraphicDts> generateProgramGraphic(StatusDts initStatus, StatusDts endStatus, ProgramDts program);
}